﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;
using SundStudent.ModelLayer;

namespace SundStudent.DBLayer
{
     public class DBLektion
    {
        private SqlCommand dbCmd = null;

        public Lektion FindLektiont(string dato, string start)
        {
            string sql = @"select dato, starttidspunkt, sluttidspunkt, underviser, stuenr, tema, modul, patient " +
                           " from lektion where dato = '" + dato + "' and starttisdpunkt = '" + start +"'" ;

            Console.WriteLine("sql stmt = " + sql);

            dbCmd = DBConnection.GetDbCommand(sql);

            IDataReader dbReader;
            dbReader = dbCmd.ExecuteReader();

            Lektion lektionObj = null; ;

            if (dbReader.Read())
            {
                try
                {
                    Console.WriteLine("antal felter " + dbReader.FieldCount);
                    lektionObj = buildLektionObj(dbReader);

                }
                catch (Exception e)
                {
                    Console.WriteLine("Lektionesobjekt ikke oprettet korrekt");
                    lektionObj = null;
                }


            }

            else
            {
                lektionObj = null;
            }
            dbReader.Close();
            DBConnection.Close();
            return lektionObj;
        }


        public List<Lektion> HentAlleLektioner(string dato)
        {
            List<Lektion> returnList = new List<Lektion>();
            string sql = @"select id, lektion.dato as dato, starttidspunkt, sluttidspunkt,lektion.beskrivelse as lBeskrivelse,"
                          + "underviser.navn as unavn, stuenr, tema, modul, modul.beskrivelse as mbeskrivelse, patient, lektionspatient.navn as navn, "
                          + " lektionspatient.seng  as seng "
                          + "from lektion, modul,underviser, lektionspatient "
                          + " where  id = lektionsid and modul = modul.nr and lektion.underviser = underviser.initialer and lektion.dato = '" + dato + "'";

            Console.WriteLine("sql stmt = " + sql);

            dbCmd = DBConnection.GetDbCommand(sql);

            IDataReader dbReader;
            dbReader = dbCmd.ExecuteReader();

            Lektion lektionObj;

            while (dbReader.Read())
            {

                lektionObj = buildLektionObj(dbReader);
                returnList.Add(lektionObj);
            }
            DBConnection.Close();
            return returnList;

        }
        private Lektion buildLektionObj(IDataReader dbReader)
        {
            Lektion lektionObj = new Lektion();
            try
            {
                Console.WriteLine("antal felter " + dbReader.FieldCount);
                LektionsPatient patientObj = new LektionsPatient();
                patientObj.Nr = Convert.ToInt32(dbReader["patient"].ToString());
                patientObj.Navn = dbReader["navn"].ToString();
                Seng sengObj = new Seng();

                sengObj.Sengnr = Convert.ToInt32(dbReader["seng"].ToString());
                patientObj.Seng = sengObj;
                lektionObj.PatientObj = patientObj;
                lektionObj.Nr = Convert.ToInt32(dbReader["id"].ToString());
                lektionObj.StartTid = dbReader["starttidspunkt"].ToString();
                lektionObj.StartTid = dbReader["sluttidspunkt"].ToString();
                lektionObj.Beskrivelse = dbReader["lBeskrivelse"].ToString();
                Console.WriteLine("ewfter besrkivelse ");
                Modul modulObj = new Modul();
                modulObj.Modulnr = Convert.ToInt32(dbReader["modul"].ToString());
                modulObj.Navn = dbReader["mbeskrivelse"].ToString();
                lektionObj.ModulObj = modulObj;
                lektionObj.Dato = Convert.ToDateTime(dbReader["dato"].ToString());
                Tema temaObj = new Tema();
                temaObj.Navn = dbReader["tema"].ToString();
                lektionObj.TemaObj = temaObj;
                Underviser undVobj = new Underviser();
                undVobj.Navn = dbReader["unavn"].ToString();
                lektionObj.UndvObj = undVobj;
                Stue stueObj = new Stue();
                stueObj.Stuenr = dbReader["stuenr"].ToString();
                lektionObj.StueObj = stueObj;



            }
            catch (Exception ex)
            {

                Console.WriteLine("Lektion objekt ikke oprettet korrekt");
                Console.WriteLine(ex);
                lektionObj = null;
            }

            return lektionObj;
        }
        public int InsertLektion(Lektion lektionObj)
        {
            int rc = -1;
            SqlCommand dbCmd = null;
            try
            {

                // tildel naeste nr

                lektionObj.Nr = 1;
                string sql = "select max(id) as nextid from lektion";
                SqlCommand dbCmd1 = DBConnection.GetDbCommand(sql);
                IDataReader dbReader;
                dbReader = dbCmd1.ExecuteReader();
                if (dbReader.Read())
                {
                    try
                    {
                        lektionObj.Nr = Convert.ToInt32(dbReader["nextid"].ToString()) + 1;
                        Console.WriteLine("næstenr lektionsid: " + lektionObj.Nr);
                    }
                    catch (Exception exobj)
                    {
                        lektionObj.Nr = 1;
                    }
                }
                DBConnection.Close();
                Console.WriteLine("max id " + sql);
                string myDato = "" + lektionObj.Dato.Year;
                if (lektionObj.Dato.Month >= 10)
                {
                    myDato = myDato + lektionObj.Dato.Month;
                }
                else
                {
                    myDato = myDato + "0" + lektionObj.Dato.Month;
                }

                if (lektionObj.Dato.Day >= 10)
                {
                    myDato = myDato + lektionObj.Dato.Day;
                }
                else
                {
                    myDato = myDato + "0" + lektionObj.Dato.Day;
                }


                string sql1 = " insert into lektion (id,dato, starttidspunkt, sluttidspunkt, underviser, stuenr, tema, modul, patient" +
                       ") values ( " + lektionObj.Nr  + ",'" 
                        + myDato + "','"
                        + lektionObj.StartTid + "','"
                        + lektionObj.SlutTid + "','"
                        + lektionObj.UndvObj.Initialer + "','"
                        + lektionObj.StueObj.Stuenr + "','"
                        + lektionObj.TemaObj.Beskrivelse   + "',"
                        + lektionObj.ModulObj.Modulnr + ","
                        + lektionObj.PatientObj.Nr 
                        + ")";

                Console.WriteLine("Insert lektionssql : " + sql1);
                 dbCmd = DBConnection.GetDbCommand(sql1);

                rc = dbCmd.ExecuteNonQuery();
                DBConnection.Close();



            }
            catch (Exception insertE)
            {
                Console.WriteLine("Fejl i insert lektion");
                Console.WriteLine(insertE);
            }
            DBConnection.Close();
            return rc;
        }
    }
}
